@JsonFormat দিয়ে Date এবং Time formatting গাইড ও নোট

Java Technologies - জ্যাকসন অ্যানোটেশন (Jackson Annotations) - @JsonFormat Annotation
332

@JsonFormat একটি Jackson Annotation, যা JSON Serialization এবং Deserialization-এর সময় তারিখ এবং সময় ফরম্যাট কাস্টমাইজ করতে ব্যবহৃত হয়। এটি আপনার প্রয়োজন অনুযায়ী JSON ফরম্যাটে Date/Time-কে নিয়ন্ত্রণ করতে সাহায্য করে, যেমন কাস্টম প্যাটার্ন, টাইমজোন, লোকেল ইত্যাদি।


@JsonFormat এর বৈশিষ্ট্য

বৈশিষ্ট্যবর্ণনা
patternতারিখ এবং সময়ের ফরম্যাট কাস্টমাইজ করার জন্য ব্যবহার হয় (যেমন: yyyy-MM-dd, HH:mm:ss ইত্যাদি)।
shapeJSON ফিল্ডের আউটপুট শেপ নির্ধারণ করে (যেমন: STRING, NUMBER, ARRAY)।
timezoneটাইমজোন সেট করার জন্য (যেমন: UTC, Asia/Kolkata)।
localeনির্দিষ্ট লোকেল (যেমন: en_US, fr_FR) সেট করতে।

@JsonFormat ব্যবহার করার উদাহরণ

১. তারিখ এবং সময় ফরম্যাটিং

@JsonFormat Annotation ব্যবহার করে আপনি JSON এ Date এবং Time ফরম্যাট কাস্টমাইজ করতে পারেন।

Java Class Example:

import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;

public class Event {
    private String name;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Kolkata")
    private Date eventDate;

    // Getters and Setters
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getEventDate() {
        return eventDate;
    }

    public void setEventDate(Date eventDate) {
        this.eventDate = eventDate;
    }
}

Serialization Example:

import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.Date;

public class JsonFormatExample {
    public static void main(String[] args) throws Exception {
        Event event = new Event();
        event.setName("Workshop");
        event.setEventDate(new Date());

        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(event);

        System.out.println(json);
    }
}

JSON Output:

{
  "name": "Workshop",
  "eventDate": "2024-12-21 14:30:00"
}

@JsonFormat দিয়ে তারিখ এবং সময় ফরম্যাট কাস্টমাইজ করা

২. তারিখ এবং সময় ফরম্যাট কাস্টম প্যাটার্ন দিয়ে

import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;

public class Event {
    private String name;

    @JsonFormat(pattern = "dd/MM/yyyy")
    private Date eventDate;

    // Getters and Setters
}

Serialization Example:

import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.Date;

public class JsonFormatExample {
    public static void main(String[] args) throws Exception {
        Event event = new Event();
        event.setName("Conference");
        event.setEventDate(new Date());

        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(event);

        System.out.println(json);
    }
}

JSON Output:

{
  "name": "Conference",
  "eventDate": "21/12/2024"
}

@JsonFormat দিয়ে TimeZone নির্ধারণ

@JsonFormat এর timezone অ্যাট্রিবিউট ব্যবহার করে আপনি নির্দিষ্ট টাইমজোন সেট করতে পারেন।

Java Class Example:

import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;

public class Event {
    private String name;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "UTC")
    private Date eventDate;

    // Getters and Setters
}

Serialization Example:

import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.Date;

public class JsonFormatExample {
    public static void main(String[] args) throws Exception {
        Event event = new Event();
        event.setName("Global Conference");
        event.setEventDate(new Date());

        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(event);

        System.out.println(json);
    }
}

JSON Output:

{
  "name": "Global Conference",
  "eventDate": "2024-12-21 09:30:00"
}

@JsonFormat দিয়ে Locale নির্ধারণ

locale অ্যাট্রিবিউট ব্যবহার করে আপনি JSON এর তারিখ এবং সময় ফরম্যাটিং লোকেল ভিত্তিক কাস্টমাইজ করতে পারেন।

Java Class Example:

import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;

public class Event {
    private String name;

    @JsonFormat(pattern = "yyyy-MM-dd", locale = "en_US")
    private Date eventDate;

    // Getters and Setters
}

Serialization Example:

import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.Date;

public class JsonFormatExample {
    public static void main(String[] args) throws Exception {
        Event event = new Event();
        event.setName("Holiday");
        event.setEventDate(new Date());

        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(event);

        System.out.println(json);
    }
}

JSON Output:

{
  "name": "Holiday",
  "eventDate": "2024-12-21"
}

Spring Boot Configuration

Spring Boot অ্যাপ্লিকেশনে আপনি @JsonFormat ব্যবহার করতে পারেন, অথবা application.properties ফাইলে ডেটা ফরম্যাট সেট করতে পারেন:

application.properties Example:

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=Asia/Kolkata

Java 8 Date/Time API এবং @JsonFormat

Jackson Java 8 Date/Time API (যেমন LocalDate, LocalDateTime) কে সাপোর্ট করে। JavaTimeModule নিবন্ধন করার মাধ্যমে আপনি LocalDate, LocalDateTime-এ @JsonFormat অ্যাপ্লাই করতে পারেন।

JavaTimeModule Dependency (Maven):

<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <version>2.15.2</version>
</dependency>

Java Class Example:

import com.fasterxml.jackson.annotation.JsonFormat;
import java.time.LocalDateTime;

public class Event {
    private String name;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime eventDateTime;

    // Getters and Setters
}

Serialization Example:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;

import java.time.LocalDateTime;

public class JsonFormatExample {
    public static void main(String[] args) throws Exception {
        Event event = new Event();
        event.setName("Meeting");
        event.setEventDateTime(LocalDateTime.now());

        ObjectMapper mapper = new ObjectMapper();
        mapper.registerModule(new JavaTimeModule());  // Register JavaTimeModule
        String json = mapper.writeValueAsString(event);

        System.out.println(json);
    }
}

JSON Output:

{
  "name": "Meeting",
  "eventDateTime": "2024-12-21 14:30:00"
}

  • @JsonFormat একটি শক্তিশালী Annotation যা Jackson এর মাধ্যমে Date এবং Time ফরম্যাট কাস্টমাইজ করতে সাহায্য করে।
  • @JsonFormat দিয়ে তারিখ এবং সময়ের কাস্টম প্যাটার্ন, টাইমজোন, এবং লোকেল নির্ধারণ করা যায়।
  • Java 8 Date/Time API এবং Spring Boot এর কনফিগারেশন সহ @JsonFormat খুবই কার্যকরী।
  • এটি Date, Time, LocalDateTime এবং Number formatting ক্ষেত্রে অনেক সুবিধা প্রদান করে।
Content added By
Promotion

Are you sure to start over?

Loading...